/*Copyright (C) 2009 Careil Baptiste

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

///////////////////////////////////////////////////////////
/// \file Colors.h Ce fichier contient les fonctions permettant de
/// modifier les couleurs de la console. Avant d'appeller une
/// des fonctions de ce fichier, curses doit être initialisé avec
/// start_color() (ou au moins CSLP_InitCurses(COLORS)) et
/// la fonction CSLP_InitMainColorPairs() doit être préalablement
/// appelée.
///////////////////////////////////////////////////////////

#ifndef CSLP_COLORS_HEADER
# define CSLP_COLORS_HEADER

# include "dll.h"
# include <curses.h>

# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */

  ///////////////////////////////////////////////////////////
  /// Permet de récupérer la couleur de fond
  ///
  /// \return La couleur du fond.
  ///////////////////////////////////////////////////////////
  int DLL_IMPEXP CSLP_GetBackgroundColor();

  ///////////////////////////////////////////////////////////
  /// Permet de récupérer la couleur du texte
  ///
  /// \return La couleur du texte.
  ///////////////////////////////////////////////////////////
  int DLL_IMPEXP CSLP_GetForegroundColor();

  ///////////////////////////////////////////////////////////
  /// Permet de réinitialiser les couleurs par défaut de la console,
  /// coit blanc sur noir.
  ///
  /// \sa CSLP_Color(), CSLP_ColorText(), CSLP_ColorBG()
  ///////////////////////////////////////////////////////////
# define CSLP_ResetColors() CSLP_Color(COLOR_WHITE, COLOR_BLACK)

  ///////////////////////////////////////////////////////////
  /// Permet d'initialiser la couleur de texte de la console.
  /// La couleur du texte n'est pas conservée lors d'un changement.
  ///
  /// \param (int)color La nouvelle couleur du texte.
  /// \sa CSLP_ResetColors(), CSLP_ColorBG(), CSLP_Color()
  ///////////////////////////////////////////////////////////
# define CSLP_ColorText(color) CSLP_Color(color, CSLP_GetBackgroundColor())

  ///////////////////////////////////////////////////////////
  /// Permet d'initialiser la couleur de fond de la console
  /// La couleur du fond n'est pas conservée lors d'un changement
  ///
  /// \param color La nouvelle couleur du fond.
  /// \sa CSLP_ResetColors, CSLP_ColorText, CSLP_Color()
  ///////////////////////////////////////////////////////////
# define CSLP_ColorBG(color) CSLP_Color(CSLP_GetForegroundColor(), color)

  ///////////////////////////////////////////////////////////
  /// Permet l'initialisation des couleur du fond et du texte de la console.
  ///
  /// \param txt La nouvelle couleur du texte
  /// \param bg La nouvelle couleur du fond
  /// \sa CSLP_ResetColors, CSLP_ColorText, CSLP_ColorBG
  ///////////////////////////////////////////////////////////
  void DLL_IMPEXP CSLP_Color(int txt, int bg);

  ///////////////////////////////////////////////////////////
  /// Permet de récupérer la valeur de l'attribut pour le couple
  /// de couleur spécifié.
  ///
  /// \param txt La couleur du texte
  /// \param bg La couleur du fond
  /// \return La valeur de l'attribut du couple de couleur.
  ///////////////////////////////////////////////////////////
  attr_t DLL_IMPEXP CSLP_GetPairAttr(int txt, int bg);

  ///////////////////////////////////////////////////////////
  /// Permet de connaitre la valeur du couple de couleur
  ///
  /// \param txt La couleur du texte
  /// \param bg La couleur du fond
  /// \return La valeur du couple.
  ///////////////////////////////////////////////////////////
  short CSLP_GetPair(int txt, int bg);

# ifdef __cplusplus
}
# endif /* __cplusplus */

#endif /* !CSLP_COLORS_HEADER */

